package cn.wizzer.app.crown.modules.services.impl.util;

import cn.wizzer.app.crown.modules.models.caches.CrownMatchSimplex;
import cn.wizzer.app.crown.modules.models.enums.MatchTypeEnum;
import cn.wizzer.app.crown.modules.models.enums.BKBetsEnum;
import cn.wizzer.app.crown.modules.models.enums.FTBetsEnum;
import cn.wizzer.framework.base.Result;

import java.util.List;
import java.util.Objects;


/**
 * 翻译玩法工具
 *
 * @author
 */
public class PlayWayUtil {

    /**
     * 需要拼接主客队名的玩法集合
     */
    private static List<Integer> no1List = Result.createList(1,2,5,6,13,15,16,18,19,21,22,24,25,27,28,30,
            34,35,36,37,39,41,42,47,51,52);

    public static String translate(CrownMatchSimplex simplex) {
        // 拼接文字
        String bet = "";
        // 玩法系数
        String coeNum = simplex.getCoeNum() == null ? "" : " " + simplex.getCoeNum();
        // 玩法文字
        String coeWord = simplex.getCoeWord() == null ? "" : " " + simplex.getCoeWord();
        if (simplex.getMatchType().equals(MatchTypeEnum.BASKETBALL)) {
            // 翻译篮球玩法 no1
            switch (Objects.requireNonNull(BKBetsEnum.getByValue(simplex.getNo1()))) {
                // 独赢
                case BK_WIN:
                    bet = BKBetsEnum.BK_WIN.NAME;
                    break;
                // 让球
                case BK_LET_BALL:
                    bet = BKBetsEnum.BK_LET_BALL.NAME + coeNum;
                    break;
                // 总得分大小
                case BK_TOTAL_SCORE:
                    bet = BKBetsEnum.BK_TOTAL_SCORE.NAME + coeWord + coeNum;
                    break;
                // 球队得分大
                case BK_TEAM_SCORE_BIG:
                    bet = BKBetsEnum.BK_TEAM_SCORE_BIG.NAME + coeNum;
                    break;
                // 球队得分小
                case BK_TEAM_SCORE_SMALL:
                    bet = BKBetsEnum.BK_TEAM_SCORE_SMALL.NAME + coeNum;
                    break;
                default:
                    return "玩法错误";
            }
            // 篮球翻译no3(独赢、让球、球队大小需要加队伍名，其他直接return bet)
            if (simplex.getNo1() == BKBetsEnum.BK_WIN.getBetValue()
                    || simplex.getNo1() == BKBetsEnum.BK_LET_BALL.getBetValue()
                    || simplex.getNo1() == BKBetsEnum.BK_TEAM_SCORE_BIG.getBetValue()
                    || simplex.getNo1() == BKBetsEnum.BK_TEAM_SCORE_SMALL.getBetValue()) {
                switch (simplex.getNo3()) {
                    case 1:
                        bet = simplex.getMbTeam() + "-" + bet;
                        break;
                    case 2:
                        bet = simplex.getTgTeam() + "-" + bet;
                        break;
                    default:
                        return "下注错误";
                }
            }

        } else if (simplex.getMatchType().equals(MatchTypeEnum.FOOTBALL)) {
            // 根据下注的no1得到对应的玩法名
            bet = FTBetsEnum.getByValue(simplex.getNo1());
            // 一些玩法需要拼接主客队名
            if (no1List.contains(simplex.getNo1())) {
                switch (simplex.getNo3()) {
                    case 1:
                        bet = bet + "-" + simplex.getMbTeam();
                        break;
                    case 2:
                        bet = bet + "-" + simplex.getTgTeam();
                        break;
                    case 3:
                        bet = bet + "-和局";
                        break;
                    default:
                        return "下注错误";
                }
            }
            bet = bet + coeWord + coeNum;

            // 翻译足球玩法 no1
//            switch (Objects.requireNonNull(FTBetsEnum.getByValue(simplex.getNo1()))) {
//                // 1：全场独赢
//                case FT_NO_1:
//                    bet = FTBetsEnum.FT_NO_1.NAME;
//                    break;
//                // 2：全场让球
//                case FT_NO_2:
//                    bet = FTBetsEnum.FT_NO_2.NAME + coeNum;
//                    break;
//                // 3：全场大小
//                case FT_NO_3:
//                    bet = FTBetsEnum.FT_NO_3.NAME + coeWord + coeNum;
//                    break;
//                // 4：全场单双
//                case FT_NO_4:
//                    bet = FTBetsEnum.FT_NO_4.NAME + coeWord + coeNum;
//                    break;
//                // 5：半场独赢
//                case FT_NO_5:
//                    bet = FTBetsEnum.FT_NO_5.NAME;
//                    break;
//                // 6：半场让球
//                case FT_NO_6:
//                    bet = FTBetsEnum.FT_NO_6.NAME + coeWord + coeNum;
//                    break;
//                // 7：半场大小
//                case FT_NO_7:
//                    bet = FTBetsEnum.FT_NO_7.NAME + coeWord + coeNum;
//                    break;
//                // 8：半场波胆
//                case FT_NO_8:
//                    bet = FTBetsEnum.FT_NO_8.NAME + coeWord + coeNum;
//                    break;
//                // 9：全场波胆
//                case FT_NO_9:
//                    bet = FTBetsEnum.FT_NO_9.NAME + coeWord + coeNum;
//                    break;
//                // 10：半场入球
//                case FT_NO_10:
//                    bet = FTBetsEnum.FT_NO_10.NAME + coeWord + coeNum;
//                    break;
//                // 11：全场入球
//                case FT_NO_11:
//                    bet = FTBetsEnum.FT_NO_11.NAME + coeWord;
//                    break;
//                // 12：半场/全场
//                case FT_NO_12:
//                    bet = FTBetsEnum.FT_NO_12.NAME + coeWord;
//                    break;
//                // 13：(15分钟盘口)开场 - 14:59 分钟 - 让球
//                case FT_NO_13:
//                    bet = FTBetsEnum.FT_NO_13.NAME + coeNum;
//                    break;
//                // 14：(15分钟盘口)开场 - 14:59 分钟 - 大 / 小
//                case FT_NO_14:
//                    bet = FTBetsEnum.FT_NO_14.NAME + coeWord + coeNum;
//                    break;
//                // 15：(15分钟盘口)开场 - 14:59 分钟 - 独赢
//                case FT_NO_15:
//                    bet = FTBetsEnum.FT_NO_15.NAME;
//                    break;
//                default:
//                    return "玩法错误";
//            }
            // 翻译no3 (全场独赢、全场让球、半场独赢、半场让球下注内容需要加上队伍名称。其他直接return bet)
//            if (simplex.getNo1() == FTBetsEnum.FT_NO_1.getBetValue()
//                    || simplex.getNo1() == FTBetsEnum.FT_NO_2.getBetValue()
//                    || simplex.getNo1() == FTBetsEnum.FT_NO_5.getBetValue()
//                    || simplex.getNo1() == FTBetsEnum.FT_NO_6.getBetValue()) {
//                switch (simplex.getNo3()) {
//                    case 1:
//                        bet = simplex.getMbTeam() + "-" + bet;
//                        break;
//                    case 2:
//                        bet = simplex.getTgTeam() + "-" + bet;
//                        break;
//                    case 3:
//                        bet = "和局-" + bet;
//                        break;
//                    default:
//                        return "下注错误";
//                }
//            }
        } else {
            bet = "类型错误";
        }
        return bet;
    }
}
